package api;
import java.util.ArrayList;
import java.util.List;
/**
 * ArrayList: 实现了List接口,是List接口下最常用的一个实现类.
 * 底层实现:数组(一旦定义其大小不改变),底层扩容本质上会创建新的数组.
 * 优势:随机访问效率高[基于下标,地址连续]
 * 劣势:随机插入或删除效率较低[插入和删除元素时可能会移动元素-元素的拷贝]
 */
public class ListTests {
    public static void main(String[] args) {
        List<Integer> list0=new ArrayList<>();
        //调用add(E e)方法向list集合添加元素,默认添加在了size位置
        list0.add(100);
        list0.add(200);
        //调用add(index,e)方法向list集合添加到index为位置,原有位置元素,依次向后移动
        list0.add(0,300);//将300插入到0位置
        System.out.println(list0);//[300,100,200]
        list0.add(300);
        System.out.println(list0);////[300,100,200,300]
        //返回指定元素的下标值
        int i0 = list0.indexOf(300);//类似String类中的indexOf方法
        int i1 = list0.lastIndexOf(300);
        System.out.println(i0);
        System.out.println(i1);
        //基于下标获取集合中元素
        System.out.println(list0.get(1));
        //修改第0个位置的元素
        //list0.set(0,500);
        //System.out.println(list0);
        //删除指定位置元素
        System.out.println(list0.remove(0));
        System.out.println(list0);
        //对象的比较,判断对象是否存在
        //contains方法底层会进行对象比较,对象比较时会调用对象的equals方法
        System.out.println(list0.contains(300));
    }
}
